VALUE TYPES

In this version you are provided with the following basic value types from 
which you can make attribute types.

Integer
      Numeric for whole numbers
      Range: -billion to billion (normal 32 bits)
      Held as:  32 bits
      Coding:  simple signed binary number

Floating point
      Numeric for floating point numbers
      Range: normal 32 bits
      Held as:  32 bits
      Coding:  normal exponent and mantissa

Ratio
      Numerator and denominator, both can be signed
      Used for any ratio
      Range:  Each part has range of full integer.
      The ratio can represent infinity by holding denominator = 0
      Held as: Two 32 bit integers
      Coding:  Two simple signed binary numbers
            Infinity when denominator = 0
      In most manipulations, the greatest common divisor is removed
            (so if you multiply 4/7 by 14/15 you get 8/15)

Odds
      Numerator and denominator, both positive
      Used especially for odds and conversions to and from probability
      Used for bayesian multipliers
      Range:  Each part has range 0 to 65k
      Held as: Two unsigned 16 bit words
      Coding:  Two simple unsigned binary numbers
            Infinity when denominator = 0
      In most manipulations the greatest common divisor is removed

String
      Any string
      Range: up to 200 characters in length at present
      Held as: child 'Sysatt' block with as much space as needed
      Coding:  ASCII

Boolean
      Truth value: yes or no, true or false
      Range:  true or false
      Held as: unsigned 16 bit word
      Coding: 0 = false, anything else = true

Probability
      0 to 1 (0 to 100%) for soft truth value
      Range:  0 to 1
      Held as:  Unsigned 16 bit word
      Coding: 0x0000 means 0, 0xffff means 1

Bayesian
      Probability used for evidential reasoning
      Has a-priori and lower and upper cut-offs
      Range:  Part as probability
      Held as:  Four probabilities
      Coding:  As probability, four times

Proportion
      Represents a proportion 0 to 100%
      Used for anything that requires a limit of 100%
      Range:  0 to 100%
      Held as:  Unsigned 16 bit word
      Coding: 0xffff means 100%
      In many things proportion and probability are interchangeable

OZMO (one-zero-minus-one, e.g. result of cosine)
      Like a proportion that can go negative as well as positive
      Used for e.g. degrees of belief, degrees of dislike
      Range:  -1 to 0 to 1
      Held as:  Signed 32 bit word,
      Coding: 0x80000000 means -1, 0 means 0, 0x7fFFffFF means 1

Direction/Angle (0 to 360 degrees)
      A circular value which represents proportion round a circle
      Used for angles, directions, etc.
      Range:  0 to 360 degrees (2.pi radians)
      Held as:  Unsigned 16 bit word
      Coding:  0x0000 = 0 and 360 degrees. 0xffff = just before 360
            90 degrees = 0x4000, 180 degrees = 0x8000, etc.

Enumerated Type
      An index number for selecting an entity from a set
      See also Ordinal, which is ordered
      Strictly, numeric comparisons and operations meaningless
            but in practice allowed as for Ordinal
      Range:  strictly meaningless
      Each value is expected to have an attached string name
      Held as:  Unsigned 16 bit word
      Coding:  0 means 'nothing selected', 1 upwards shows selection

Ordinal
      An index number for selecting an entiry from a list
      See also Enum, which is unordered
      Numeric comparisons and operations meaningful
      Range:  1 to 65k
      Each value can be linked to an attached string name
      Held as:  Unsigned 16 bit word
      Coding:  1 = first in list, 2 = second, etc.
            0 = 'nothing selected'

Block
      The DSAP of a block in the KB
      Used for identifying things in the KB and e.g. getting name of it
      Its value must never be altered as it is like a pointer
      Range:  strictly meaningless
      Coding:  32 bit relative pointer


Copyright (c) Andrew Basden, 1996
